package Day_0218.Serialization;

/**
 * @author zxc
 * @date 2023/02/18 21:50
 **/
public class Serialization {
    public static void main(String[] args) {
        /**
         * 谈一谈对于序列化的理解
         * ===》
         * 一，序列化的定义
         * （1）序列化就是，一种用来处理对象流的机制，所谓对象流也就是 将对象的内容进行流化。
         * ===》可以对流化后的对象（对象流）进行读写操作，也可将流化后的对象（对象流）传输于网络之间。
         * （2）序列化，是为了解决在对 对象流进行读写操作时所引发的问题。
         * （3）反序列化的过程，则是和序列化相反的过程;
         *  即，序列化是与反序列化相互对应的;
         * （4）不能将序列化局限在 Java 对象转换成二进制数组，
         *  例如说，我们将一个 Java 对象，转换成JSON 字符串，或者 XML 字符串，这也可以理解为是序列化。
         *
         * 二，Java中，如何实现序列化
         * 1.将需要被序列化的类，实现 Serializable 接口，
         * 该接口没有需要实现的方法，implements Serializable只是，为了标注该对象是可被序列化的。
         *
         * 2.序列化
         * （1）使用一个输出流(如：FileOutputStream)，来构造一个 ObjectOutputStream(对象流)对象;
         * （2）接着，使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法，
         * （3）接着，可以将参数为 obj 的对象写出(即，保存其状态)。
         *
         * 3.反序列化
         * ===》要恢复的话则用输入流。
         *
         * 三，Java 序列话中，如果有些字段不想进行序列化怎么办？
         * 1.对于不想进行序列化的变量，使用 transient 关键字修饰。
         * 2.当对象被序列化时，阻止实例中那些用关键字transient修饰的的变量序列化。
         * 3.当对象被反序列化时，被transient关键字修饰的变量值,不会被持久化和恢复。
         * **** 注意 ：transient关键字只能修饰变量，不能修饰类和方法
         *
         * ===》
         * 对于不需要进行序列化的变量，则使用transient关键字，对于该变量进行修饰;
         *
         *
         */
    }
}
